// 打包体积
const { BundleAnalyzerPlugin } = require('webpack-bundle-analyzer');

// 对js进行压缩
const TerserPlugin = require('terser-webpack-plugin');

const path = require('path');

module.exports = (env, argv) => {
	return {
		mode: 'production',
		devtool: false,

		plugins: [
			new BundleAnalyzerPlugin(),
			new TerserPlugin({
				terserOptions: {
					// https://github.com/terser/terser#minify-options
					compress: {
						warnings: false, // 删除无用代码时是否给出警告
						drop_debugger: true, // 删除所有的debugger
						drop_console: true, // 删除所有的console.*
						// pure_funcs: ['']
						pure_funcs: ['console.log'] // 删除所有的console.log
					}
				}
			})
			// 其他插件...
		],
		externals: {
			// 模块名: 全局变量
			// '@antv/g2plot': 'G2Plot'
		},
		optimization: {
			minimize: true,
			splitChunks: {
				chunks: 'all',
				minSize: 30000,
				minChunks: 1,
				cacheGroups: {
					// 分离第三方库
					reactDom: {
						test: /[\\/]node_modules[\\/](react-dom)[\\/]/,
						name: 'react-dom',
						chunks: 'all'
					},
					refractor: {
						test: /[\\/]node_modules[\\/](refractor)[\\/]/,
						name: 'refractor',
						chunks: 'all'
					}
				}
			}
		},
		performance: {
			hints: 'warning', // 禁用默认的性能提示
			maxAssetSize: 500000, // 文件大小阈值（以字节为单位）
			maxEntrypointSize: 500000 // 入口点大小阈值（以字节为单位）
		}
		// 感觉不配置也差不多，不知道是不是电脑配置原因
		// module: {
		// 	rules: [
		// 		{
		// 			test: /\.js$/,
		// 			exclude: /node_modules/,
		// 			use: [
		// 				{
		// 					loader: 'thread-loader',
		// 					options: {
		// 						workers: 10 // 设置为 2 个 worker 线程
		// 					}
		// 				},
		// 				'babel-loader'
		// 			]
		// 		}
		// 	]
		// }
	};
};
